home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 08 / 5 / DISK0859.ZIP / DEMO / MVS.ALC < prev    next >
Text File  |  1987-06-06  |  18KB  |  660 lines

  1. *********
  2. *
  3. * PGMID.  MVS.ALC  (LINKED TO MVS.MOD FOR DYNMAIC LOAD AND EXEC)
  4. * AUTHOR. DON HIGGINS
  5. * DATE.   05/26/87
  6. * REMARKS.
  7. *         THIS MODULE DEFINES MVS SVC HANDLER AND EXTERNAL
  8. *         INTERRUPT HANDLER TO SUPPORT EXECUTION OF MODULES WITH
  9. *         MVS SVC'S.  RETRUN FROM THIS MODULE IS VIA LPSW WHICH
  10. *         PLACES CALLING PROGRAM IN PROBLEM STATE WITH SUPERVISOR
  11. *         AND NO EXTERNAL INTERRUPTS ENABLED (EXTERNAL CAN BE TURNED
  12. *         ON LATER IF DESIRED).  FOR MVS SVC EQU'S SEE MVS.DOC.
  13. *
  14. * MAINTENANCE.
  15. *
  16. * 05/30/87 CHANGE SVC 3 EXIT TO RETURN IN SUPR STATE, ADD SVC 10
  17. * 05/31/87 ADD IGC013 ABEND T1/T4
  18. * 06/01/87 USE SVCR15 TO SIMPLIFY RTN SAVE/RESTORE, CHANGE IGC NAMES
  19. * 06/04/87 SAVE R14,R1 ACROSS EXECRTN FOR SVC'S AND INS'S
  20. * 06/06/87 FIX WTOR TO CLEAR R15 AND USE EXTERNAL INTERRUPT TO POST
  21. *********
  22. *
  23. * MVS NUCLEUS INITIALIZATION PROGRAM (NIP)
  24. *
  25. *********
  26. MVS      CSECT
  27.     USING MVS,R15
  28.     STM   R14,R6,12(R13)
  29.     LR    R6,R15
  30.     DROP  R15
  31.     USING MVS,R6
  32.     SVC   TRACE
  33.     DC    C'IOF'            TURN OFF INTERRUPTS FOR WTOR FACILITY
  34. *
  35. * INIT CVT
  36. *
  37.     LA    R1,CVT
  38.     USING IHACVT,R1
  39.     ST    R1,16             STORE CVT ADDRESS IN LOW MEMORY
  40.     LA    R0,TCB
  41.     ST    R0,CVTTCBP        CVT TCB PTR
  42.     LA    R0,SMCA
  43.     ST    R0,CVTSMCA        CVT SMCA PTR
  44.     L     R0,ASCASL
  45.     ST    R0,CVTMZ00        CVT END OF REAL MEMORY
  46. *
  47. * INIT SVC TABLE
  48. *
  49.     LA    R1,4*256
  50.     SVC   GMAIN
  51.     LTR   R0,R0
  52.     BNZ   ABEND80A          NO MEMORY FOR SVC TABLE
  53.     ST    R2,ASVCTAB
  54.     LR    R0,R2
  55.     LA    R1,4*256
  56.     SR    R14,R14
  57.     SR    R15,R15
  58.     MVCL  R0,R14            CLEAR SVC TABLE
  59.     LA    R0,IGC0001
  60.     ST    R0,4*1(R2)        INIT SVC  1 WAIT
  61.     LA    R0,IGC0002
  62.     ST    R0,4*2(R2)        INIT SVC  2 POST
  63.     LA    R0,IGC0003
  64.     ST    R0,4*3(R2)        INIT SVC  3 EXIT
  65.     LA    R0,IGC0010
  66.     ST    R0,4*10(R2)       INIT SVC 10 GMAINR/FMAINR
  67.     LA    R0,IGC0013
  68.     ST    R0,4*13(R2)       INIT SVC 13 ABEND T1
  69.     LA    R0,IGC0035
  70.     ST    R0,4*35(R2)       INIT SVC 35 WTO/WTOR
  71. *
  72. * INIT INS TABLE
  73. *
  74.     LA    R1,4*256
  75.     SVC   GMAIN
  76.     LTR   R0,R0
  77.     BNZ   ABEND80A          NO MEMORY FOR INS TABLE
  78.     ST    R2,AINSTAB
  79.     LR    R0,R2
  80.     LA    R1,4*256
  81.     SR    R14,R14
  82.     SR    R15,R15
  83.     MVCL  R0,R14            CLEAR SVC TABLE
  84. *
  85. * INIT SVC, PGM, AND EXT NEW PSW'S
  86. *
  87.     LA    R0,SVCRTN
  88.     ST    R0,SVCPSW+4       INIT NEW SVC PSW ADDR
  89.     LA    R0,PGMRTN
  90.     ST    R0,PGMPSW+4       INIT NEW PGM PSW ADDR
  91.     LA    R0,EXTRTN
  92.     ST    R0,EXTPSW+4       INIT NEW EXT PSW ADDR
  93.     MVC   NEWSVC(8),SVCPSW  SET NEW SVC PSW
  94.     MVC   NEWPGM(8),PGMPSW  SET NEW PGM PSW
  95.     MVC   NEWEXT(8),EXTPSW  SET NEW EXT PSW
  96.     LM    R14,R6,12(R13)    RESTORE CALLER'S REG'S
  97.     DROP  R6
  98.     USING MVS,R15
  99.     ST    R14,PRBPSW+4      INIT PROBLEM STATE EXIT PSW ADDR
  100. *
  101. * EXIT TO CALLER IN PROBLEM STATE TO ACTIVATE MVS SHELL ENVIRONMENT
  102. *
  103.     LPSW  PRBPSW            EXIT WITH NEW PROBLEM PSW
  104.     DROP
  105. SVCPSW   DS    0D
  106.     DC    X'060C0000',A(*-*)  ENTER SVC HANDLER IN SUPR STATE
  107. PGMPSW   DS    0D
  108.     DC    X'060C0000',A(*-*)  ENTER PGM HANDLER IN SUPR STATE
  109. EXTPSW   DS    0D
  110.     DC    X'060C0000',A(*-*)  ENTER EXT HANDLER IN SUPR STATE
  111. PRBPSW   DS    0D
  112.     DC    X'070D0000',A(*-*)  RETURN WITH PROB. STATE AND EXT. INT.
  113. *********
  114. *
  115. *  MVS SVC INTERRUPT HANDLER
  116. *
  117. *********
  118. SVCRTN   EQU   *
  119.     SVC   TRACE
  120.     DC    C'SVC'
  121.     DROP
  122.     ST    R15,SVCR15
  123.     L     R15,NEWSVC+4
  124.     USING SVCRTN,R15
  125.     STM   R0,R14,SVCSAV
  126.     L     R14,SVCR15
  127.     ST    R14,SVCSAV+15*4
  128.     L     R14,OLDSVC+4  R14 = ADDR SVC + 2
  129.     BCTR  R14,0
  130.     SR    R2,R2
  131.     IC    R2,0(R14)     R2=SVC#
  132.     L     R3,ASVCTAB
  133.     LA    R4,IGC0NNN
  134.     BAL   R14,EXECRTN    EXECUTE SVC
  135.     USING *,R14
  136.     LTR   R15,R15        WAS EXEC OK
  137.     BNZ   ABEND106
  138.     LM    R2,R13,SVCSAV+2*4  RESTORE USER REGS (2-13 ONLY)
  139.     LPSW  OLDSVC         EXIT TO INSTR AFTER ORIG SVC IN PROB STATE
  140. ABEND106 EQU   *
  141.     L     R1,=X'80106000' NO, ABEND 106 WITH DUMP
  142.     LA    R2,13
  143.     L     R3,ASVCTAB
  144.     LA    R4,IGC0NNN
  145.     BAL   R14,EXECRTN   EXECUTE ABEND SVC
  146.     DROP
  147.     USING *,R14
  148.     OI    OLDSVC+1,X'02' TURN ON WAIT BIT IN OLD SVC PSW
  149.     LM    R0,R15,SVCSAV RESTORE ALL REGS TO ORIG.
  150.     LPSW  OLDSVC        IF IT RETURN'S, LOAD WAIT STATE OLD PSW
  151.     DROP
  152. SVCSAV   DC    16F'0'
  153. ********
  154. *
  155. * PROGRAM INTERRUPT ROUTINE
  156. *
  157. ********
  158. PGMRTN   EQU   *
  159.     SVC   TRACE
  160.     DC    C'PGM'
  161.     DROP
  162.     ST    R15,PGMR15  TEMP SAVE R15 IN LOW MEMORY
  163.     L     R15,NEWPGM+4
  164.     USING PGMRTN,R15
  165.     STM   R0,R14,PGMSAV  SAVE REGS
  166.     L     R14,PGMR15
  167.     ST    R14,PGMSAV+4*15
  168.     CLI   OLDPGM+3,2    IS THIS PRIVILEGED OR OPERATION EXCEPTION
  169.     BH    ABEND0CX      NO, ABEND 0CX WITH DUMP
  170.     L     R14,OLDPGM+4  YES, TRY TO LOAD INS0NNN MACRO INSTRUCTION
  171.     SR    R2,R2
  172.     IC    R2,0(R14)     R2 = OPERATION CODE
  173.     L     R3,AINSTAB
  174.     LA    R4,INS0NNN
  175.     BAL   R14,EXECRTN   EXECUTE INS RTN IF FOUND
  176.     USING *,R14
  177.     LTR   R15,R15       WAS MACRO INSTR. EXEC OK
  178.     BNZ   ABEND0CX      NO, ABEND 0CX WITH DUMP
  179.     LM    R0,R15,PGMSAV RESTORE ALL REGS
  180.     LPSW  OLDPGM        EXIT TO NEXT INSTR IN PROB STATE
  181.     DROP
  182. ABEND0CX EQU   *
  183.     BALR  R15,0
  184.     USING *,R15
  185.     SR    R1,R1
  186.     IC    R1,OLDPGM+3
  187.     SLL   R1,12
  188.     O     R1,=X'800C0000' R1=0CX SYSTEM ABEND WITH DUMP
  189.     LA    R2,13
  190.     L     R3,ASVCTAB
  191.     LA    R4,IGC0NNN
  192.     BAL   R14,EXECRTN   EXECUTE ABEND SVC
  193.     DROP
  194.     USING *,R14
  195.     OI    OLDPGM+1,X'02' TURN ON WAIT BIT IN OLD PGM PSW
  196.     LM    R0,R15,PGMSAV
  197.     LPSW  OLDPGM        IF IT RETURN'S, LOAD WAIT STATE OLD PSW
  198.     DROP
  199. PGMSAV   DC    16F'0'         SAVE R0-R15
  200. ********
  201. *
  202. * EXTERNAL INTERRUPT ROUTINE
  203. *
  204. *   1.  CURRENTLY ONLY FUNCTION IMPLEMENTED VIA EXTERNAL INTERRUPT IS
  205. *       ENTRY OF WTOR REPLY WITH POST OF ECB WHEN DONE.  ONLY ONE WTOR
  206. *       ACTIVE AT A TIME IS SUPPORTED IN THIS SINGLE USER SHELL.
  207. *       PC/370 RELEASE 2.0 EXECUTES EXTERNAL INTERRUPT ROUTINE EVERY
  208. *       256 INSTRUCTIONS IF ENABLED AND PROBLEM STATE.  THIS WILL
  209. *       CAUSE HESITATION ON SLOWER PC'S AND HAVING EXTERNAL INTERRUPT
  210. *       ENABLED FOR THIS FACILITY INTRODUCES AROUND 10% OVERHEAD (25
  211. *       EXTRA INSTRUCTIONS EVERY 256 INSTRUCTIONS).
  212. *
  213. ********
  214. EXTRTN   EQU   *
  215.     SVC   TRACE
  216.     DC    C'EXT'
  217.     DROP
  218.     ST    R15,EXTR15    TEMP SAV R15
  219.     L     R15,NEWEXT+4
  220.     USING EXTRTN,R15
  221.     STM   R0,R14,EXTSAV    SAVE REGS
  222.     L     R14,EXTR15
  223.     ST    R14,EXTSAV+4*15
  224.     CLI   WTORPEND,TRUE    EXIT IF NO WTOR PENDING
  225.     BNE   EXTEXT
  226.     SVC   KEYSTAT          IS THERE KEYBOARD INPUT PENDING
  227.     LTR   R0,R0            EXIT IF NO KEY PENDING
  228.     BZ    EXTEXT
  229.     L     R3,WTORCCNT
  230.     L     R4,WTORCRPY
  231. WTORLOOP EQU   *
  232.     SVC   KEYSTAT          IS THERE KEYBOARD INPUT PENDING
  233.     LTR   R0,R0
  234.     BZ    WTORSAVE
  235.     SVC   KEYREAD
  236.     CLM   R0,1,=AL1(CR)
  237.     BE    WTORDONE         STOP AT CARRIAGE RETURN
  238.     STC   R0,0(R4)
  239.     LA    R4,1(R4)
  240.     BCT   R3,WTORLOOP      REPEAT UNTIL NO MORE CHAR OR FULL
  241. WTORDONE EQU   *
  242.     MVI   WTORPEND,FALSE
  243.     LA    R2,LF
  244.     SVC   WRITECHR
  245.     LA    R2,CR
  246.     SVC   WRITECHR
  247.     L     R2,WTORTCNT
  248.     SR    R2,R3
  249.     BZ    WTORSKIP         SKIP CONVERT IF NO CHAR.
  250.     L     R1,WTORARPY
  251.     SVC   ASCEBC           CONVERT REPLY TO EBCDIC
  252. WTORSKIP EQU   *
  253.     L     R1,WTORAECB
  254.     LA    R6,IGC0002
  255.     BALR  R14,R6           POST WTOR ECB VIA BRANCH ENTRY TO POST
  256.     USING *,R14
  257.     LM    R0,R15,EXTSAV    RESTORE ALL REGS
  258.     LPSW  OLDEXT           EXIT TO NEXT INSTR. OR EXIT FROM WAIT
  259.     DROP  R14
  260. WTORSAVE EQU   *
  261.     ST    R3,WTORCCNT
  262.     ST    R4,WTORCRPY
  263. EXTEXT   EQU   *
  264.     LM    R0,R15,EXTSAV    RESTORE ALL REGS
  265.     LPSW  OLDEXT           EXIT TO NEXT INSTR
  266.     DROP
  267. EXTSAV   DC    16F'0'         SAVE R0-R15
  268. ********
  269. *
  270. *  EXECUTE SVC/INS ROUTINE FROM SVC, PGM, OR EXT INTERRUPT HANDLER
  271. *
  272. *  NOTE THIS ROUTINE ALONG WITH INTERRUPT HANDLERS IS CURRENTLY ONLY
  273. *  SERIALLY REUSABLE SO NO SVC CAN ISSUE MVS SVC ETC. (PC/370 SVC'S OK).
  274. *  THIS IS A SINGLE USER NON-MULTI-TASKING VERSION OF MVS.
  275. *
  276. *  R2  = NUMBER OF SVC OR USER DEFINED INSTRUCTION OP CODE
  277. *  R3  = SVC/INS TABLE
  278. *  R4  = ADDRES OF MODULE NAME 'IGC0NNN' OR 'INS0NNN'
  279. *  R14 = RETURN ADDRESS
  280. *  R15 = NZ IF LOAD FAILED ELSE ZERO FOR SUCCESSFUL EXECUTION
  281. *
  282. EXECRTN  EQU   *
  283.     BALR  R7,0
  284.     USING *,R7
  285.     CLI   LOCK,BUSY
  286.     BE    ABENDFXX      ABEND FXX FOR INVALID RECURSIVE ENTRY
  287.     MVI   LOCK,BUSY
  288.     ST    R14,EXECEXT
  289.     AR    R2,R2
  290.     AR    R2,R2         R2=4*SVC#
  291.     L     R6,0(R2,R3)   R6=A(SVC RTN ENTRY)
  292.     LTR   R6,R6
  293.     BNZ   CALLRTN
  294.     BAL   R14,LOADRTN   LOAD SVC/INS IF NO ADDR IN TABLE
  295.     BNZ   EXITRTN
  296. CALLRTN  EQU   *
  297.     LA    R3,CVT
  298.     LA    R4,TCB
  299.     LA    R5,RB
  300.     LA    R7,ASCB
  301.     BALR  R14,R6        CALL SVC ROUTINE
  302. EXITRTN  EQU   *
  303.     BALR  R14,0
  304.     USING *,R14
  305.     MVI   LOCK,FREE
  306.     L     R14,EXECEXT
  307.     BR    R14
  308.     DROP  R14
  309. LOCK     DC    AL1(FREE)     PREVENT RECURSIVE CALLS
  310. FREE     EQU   0
  311. BUSY     EQU   1
  312. EXECEXT  DC    A(0)
  313. LOADRTN  EQU   *
  314.     ST    R14,LOADEXT
  315.     STM   R0,R1,LOADSAV SAVE R0-R1 ACROSS LOAD
  316.     LA    R3,0(R2,R3)  SAVE TABLE ENTRY ADDR IN R3
  317.     SRL   R2,2
  318.     CVD   R2,PWORK
  319.     MVC   3(4,R4),=X'F0202020'
  320.     ED    3(4,R4),PWORK+6
  321.     LR    R1,R4
  322.     SVC   LOAD          LOAD TYPE 3/4 DYNAMIC SVC ROUTINE
  323.     L     R14,LOADEXT
  324.     LTR   R15,R15
  325.     BNZR  R14
  326.     ST    R0,0(R3)      SAVE SVC ENTRY IN SVC TABLE
  327.     LR    R6,R0
  328.     LM    R0,R1,LOADSAV
  329.     BR    R14           RETURN FROM LOAD SVC
  330.     DROP
  331. LOADEXT  DC    A(0)
  332. LOADSAV  DC    2F'0'
  333. IGC0NNN  DC    C'IGC0NNN.MOD' TYPE 3/4 SVC MODULE
  334. INS0NNN  DC    C'INS0NNN.MOD' TYPE 3/4 USER DEFINED OPCODE ROUTINE
  335. ASVCTAB  DC    A(*-*)        ADDRESS OF SVC TABLE
  336. AINSTAB  DC    A(*-*)        USER DEFINED INSTRUCTION RTN TABLE
  337. *********
  338. *
  339. * WAIT STATE ERRORS
  340. *
  341. *********
  342. ABEND80A EQU   *       MEMORY ERROR DURING NIP
  343.     SVC   TRACE
  344.     DC    C'80A'
  345.     SVC   TRACE
  346.     DC    C'BUG'
  347. ABENDFXX EQU   *       RECURSIVE CALL TO EXECRTN
  348.     SVC   TRACE
  349.     DC    C'FXX'
  350.     SVC   TRACE
  351.     DC    C'BUG'
  352. *********
  353. *
  354. *  IGC0001 - WAIT
  355. *
  356. *********
  357. IGC0001  DS    0H
  358.     USING *,R6
  359.     SR    R15,R15
  360.     LTR   R1,R1
  361.     BZ    IGC0001E       EXIT WITH ERROR IF ECBLIST
  362.     TM    0(R1),X'40'
  363.     BOR   R14            EXIT OK IF POSTED ALREADY
  364.     OI    0(R1),X'80'    TURN ON WAIT BIT FOR EXT. INT. POST
  365.     LA    R0,IGC0001L
  366.     ST    R0,WAITLOOP+4
  367.     LPSW  WAITLOOP       ENTER ENABLED PROB. STATE AND LOOP
  368. IGC0001L B     *              LOOP UNTIL POST OCCURS VIA EXT. INT.
  369. IGC0001E EQU   *
  370.     LA    R15,4
  371.     BR    R14
  372. WAITLOOP DC    0D'0',X'070D0000',A(*-*) PROB STATE LOOP
  373. *********
  374. *
  375. *  IGC0002 - POST
  376. *
  377. *********
  378. IGC0002  DS    0H
  379.     USING *,R6
  380.     SR    R15,R15
  381.     LTR   R1,R1
  382.     BM    IGC0002E       EXIT WITH ERROR IF ECBLIST
  383.     OI    0(R1),X'40'    TURN ON ECB POST BIT
  384.     TM    0(R1),X'80'    IS WAIT BIT ON
  385.     BZR   R14            EXIT NOW IF TASK NOT WAITING
  386.     NI    OLDEXT+1,X'FE' TURN OFF PROB. STATE IF WAITING
  387.     LA    R0,IGC0002P    FORCE EXIT FROM WAIT SVC LOOP
  388.     ST    R0,OLDEXT+4    RESET EXT RETURN ADDR. TO BR R14
  389. IGC0002P EQU   *
  390.     BR    R14            EXIT IN SUPERVISOR STATE
  391. IGC0002E EQU   *
  392.     LA    R15,4
  393.     BR    R14
  394. *********
  395. *
  396. *  IGC0003 - EXIT
  397. *
  398. *********
  399. IGC0003  DS    0H
  400.     USING *,R6
  401.     NI    OLDSVC+1,X'FE' TURN OFF PROBLEM STATE
  402.     SR    R15,R15
  403.     BR    R14            EXIT IN SUPERVISOR STATE
  404. *********
  405. *
  406. *  IGC0010 - GMAINR/FMAINR  R0=SPL,LENGTH,  R1=NEG GMAIN/POS. FMAIN ADDR.
  407. *
  408. *********
  409. IGC0010  DS    0H
  410.     USING *,R6
  411.     LTR   R1,R1
  412.     BNM   IGC0010F
  413. IGC0010G EQU   *
  414.     LR    R1,R0
  415.     SVC   GMAIN
  416.     LR    R0,R1
  417.     LR    R1,R2
  418.     SR    R15,R15
  419.     BR    R14
  420. IGC0010F EQU   *
  421.     LR    R2,R1
  422.     LR    R1,R0
  423.     SVC   FMAIN
  424.     SR    R15,R15
  425.     BR    R14
  426. *********
  427. *
  428. *  IGC0013 - ABEND R1 = COMPLETION CODE
  429. *
  430. *********
  431. IGC0013  DS    0H
  432.     USING *,R6
  433.     STM   R14,R2,IGC0013S
  434.     ST    R1,PWORK
  435.     UNPK  DWORK(9),PWORK(5)
  436.     TR    DWORK(8),HEXTAB-240
  437.     MVC   DCMP,DWORK
  438.     UNPK  DWORK(9),OLDSVC(5)
  439.     TR    DWORK(8),HEXTAB-240
  440.     MVC   DPSW(8),DWORK
  441.     UNPK  DWORK(9),OLDSVC+4(5)
  442.     TR    DWORK(8),HEXTAB-240
  443.     MVC   DPSW+8(8),DWORK
  444.     LA    R2,DABEND
  445.     SVC   WTO        DISPLAY COMPLETION CODE AND PSW
  446.     LTR   R1,R1
  447.     BP    IGC0013N   NO DUMP REQUESTED
  448.     L     R0,AIGC1013
  449.     LTR   R0,R0
  450.     BNZ   IGC0013D
  451.     LA    R1,=C'IGC1013.MOD'
  452.     SVC   LOAD
  453.     LTR   R15,R15
  454.     BNZ   IGC0013A   EXIT WITH ERROR TO FORCE ABEND 106
  455.     ST    R0,AIGC1013 SAVE ADDRESS OF TYPE 4 ABEND FORMATTED DUMP
  456. IGC0013D EQU   *          TYPE 4 FOUND, GO PRINT FORMATTED DUMP
  457.     LM    R14,R2,IGC0013S
  458.     L     R6,AIGC1013
  459.     BR    R6         LINK TO TYPE 4 FORMATTED ABEND DUMP ROUTINE
  460. IGC0013N EQU   *          NO DUMP REQUESTED, EXIT NORMALLY
  461.     LM    R14,R2,IGC0013S
  462.     SR    R15,R15    CLEAR R15 TO PREVENT 106 ABEND FOR IGC1013 ONLY
  463.     BR    R14        EXIT NORMALLY
  464. IGC0013A EQU   *
  465.     LM    R14,R2,IGC0013S
  466.     LA    R15,4      SET ERROR TO FORCE 106 ABEND FOR IGC1013 NOT FOUND
  467.     BR    R14        EXIT NORMALLY
  468. AIGC1013 DC    A(0)       ADDRESS OF TYPE 4 ABEND FORMATTED DUMP ROUTINE
  469. IGC0013S DC    5F'0'      SAVE R14,R2 ACROSS LOAD
  470. DABEND   DC    C'IGC0013A ABEND = '
  471. DCMP     DC    CL8'XXSSSUUU',C'  PSW = '
  472. DPSW     DC    CL16' ',C'$'
  473. *********
  474. *
  475. *  IGC0035 - WTO/WTOR
  476. *
  477. *********
  478. IGC0035  DS    0H
  479.     USING *,R6
  480.     SR    R2,R2
  481.     CLI   0(R1),0
  482.     BNE   IGCWTOR
  483. IGCWTO   EQU   *
  484.     IC    R2,1(R1)
  485.     SH    R2,=H'4'
  486.     EX    R2,MVCWTO  MOVE WTO TEXT
  487.     LA    R2,WTOMSG(R2)
  488.     MVI   0(R2),C'$' ADD MS-DOS END OF TEXT
  489.     LA    R2,WTOMSG
  490.     SVC   WTO        ISSUE MS-DOS WTO
  491.     SR    R15,R15
  492.     BR    R14
  493. IGCWTOR  EQU   *
  494.     SR    R15,R15
  495.     IC    R15,9(R1)
  496.     EX    R15,MVCWTORM
  497.     LA    R2,WTOMSG-4(R15)
  498.     MVI   0(R2),C'$'
  499.     LA    R2,WTOMSG
  500.     SVC   WTO
  501.     CLI   WTORPEND,TRUE    ONLY ONE AT A TIME ALLOWED
  502.     BE    WTORERR
  503.     IC    R15,0(R1)   R15 = REPLY LENGTH
  504.     ST    R15,WTORTCNT     SAVE COUNT FOR EXT. INT. RTN.
  505.     ST    R15,WTORCCNT
  506.     L     R0,0(R1)
  507.     ST    R0,WTORARPY      SAVE REPLY ADDR.
  508.     ST    R0,WTORCRPY
  509.     L     R15,4(R1)
  510.     ST    R15,WTORAECB     SAVE ECB ADDR.
  511.     SR    R0,R0
  512.     ST    R0,0(R15)        CLEAR ECB
  513.     MVI   WTORPEND,TRUE    ENABLE EXT. INT. REPLY ROUTINE
  514.     SR    R15,R15
  515.     BR    R14              EXIT WITH REPLY PENDING
  516. WTORERR  EQU   *
  517.     LA    R15,4
  518.     BR    R14
  519. WTOMSG   DC    CL256' ',C' '
  520. MVCWTO   MVC   WTOMSG(0),4(R1)
  521. MVCWTORM MVC   WTOMSG(0),12(R1)
  522. WTORPEND DC    AL1(FALSE)
  523. TRUE     EQU   1
  524. FALSE    EQU   0
  525. WTORTCNT DC    A(*-*) TOTAL REPLY CHAR ALLOWED
  526. WTORCCNT DC    A(*-*) CURRENT REPLY COUNTER DEC BY EXT. INT. RTN.
  527. WTORARPY DC    A(*-*) ADDRESS OF REPLY FIELD
  528. WTORCRPY DC    A(*-*) CURRENT REPLY CHAR. ADDR. INC BY EXT. INT. RTN.
  529. WTORAECB DC    A(*-*) ADDRESS OF ECB
  530. ********
  531. *
  532. * COMMON DATA
  533. *
  534. ********
  535. *
  536. * PC/370 SVC'S
  537. *
  538. PWORK    DC    D'0'
  539. DWORK    DC    CL9' '
  540. HEXTAB   DC    C'0123456789ABCDEF'
  541. EXIT     EQU   0
  542. TRACE    EQU   9
  543. GMAIN    EQU   10
  544. FMAIN    EQU   11
  545. EBCASC   EQU   12
  546. ASCEBC   EQU   12
  547. LOAD     EQU   25
  548. WTO      EQU   200+9   MS-DOS PRINT TEXT
  549. WRITECHR EQU   200+2   MS-DOS PRINT CHAR
  550. KEYREAD  EQU   200+1   MS-DOS READ CHAR WITH ECHO
  551. KEYSTAT  EQU   200+11  MS-DOS TEST KEYBOARD
  552. CR       EQU   X'0D'   ASCII CARRIAGE RETURN
  553. LF       EQU   X'0A'   ASCII LINE FEED
  554. *
  555. * GENERAL REGISTERS
  556. *
  557. R0       EQU   0
  558. R1       EQU   1
  559. R2       EQU   2
  560. R3       EQU   3
  561. R4       EQU   4
  562. R5       EQU   5
  563. R6       EQU   6
  564. R7       EQU   7
  565. R8       EQU   8
  566. R9       EQU   9
  567. R10      EQU   10
  568. R11      EQU   11
  569. R12      EQU   12
  570. R13      EQU   13
  571. R14      EQU   14
  572. R15      EQU   15
  573. *********
  574. *
  575. * CVT - MVS COMMUNICATIONS VECTOR TABLE
  576. *
  577. *********
  578.     DS    0F
  579.     DC    CL16'PC/370 MVS CVT'
  580.     DC    X'8386'     MACHINE #
  581.     DC    C'2.0A'     PC/370 RELEASE 2.0A
  582. CVT      DS    0F
  583.     DC    A(*-*)      CVTTCBP ACCRESS OF NEXT TCB
  584.     ORG   CVT+56
  585.     DC    PL4'87200'  CVTDATE PACKED DECIMAL DATE
  586.     ORG   CVT+116
  587.     DC    X'93'       MVS/XA OS OPTIONS
  588.     ORG   CVT+128
  589.     DC    A(X'200')   CVTNUCB END OF NUCLEUS
  590.     ORG   CVT+164
  591.     DC    A(*-*)      CVTMZ00 HIGHEST ADDRESS IN MACHINE
  592.     ORG   CVT+196
  593.     DC    A(*-*)      CVTSMCA SMF COMMON AREA
  594.     DC    A(*-*)      CVTUSER USER POINTER
  595. *********
  596. *
  597. * MISC. MVS CONTROL BLOCKS
  598. *
  599. *********
  600. TCB      DS    0F          TASK CONTROL BLOCK
  601. RB       DS    0F
  602. ASCB     DS    0F          ADDRESS SPACE CONTROL BLOCK
  603. SMCA     DS    0F          SMF COMMON AREA
  604. *********
  605. *
  606. * PSW.DOC LOW MEMORY PSW EQUATES
  607. *
  608. *********
  609. OLDEXT   EQU   X'18' OLD EXTERNAL PSW
  610. OLDSVC   EQU   X'20' OLD SUPERVISOR CALL PSW
  611. OLDPGM   EQU   X'28' OLD PROGRAM CHECK PSW
  612. OLDMCK   EQU   X'30' OLD MACHINE CHECK PSW
  613. OLDIOS   EQU   X'38' OLD I/O INTERRUPT PSW
  614. CSW      EQU   X'40' CHANNEL STATUS WORD
  615. CAW      EQU   X'48' CHANNEL ADDRESS WORD
  616. ITIMER   EQU   X'50' INTERVAL TIMER
  617. NEWEXT   EQU   X'58' NEW EXTERNAL PSW
  618. NEWSVC   EQU   X'60' NEW SUPERVISOR CALL PSW
  619. NEWPGM   EQU   X'68' NEW PROGRAM CHECK PSW
  620. NEWMCK   EQU   X'70' NEW MACHINE CHECK PSW
  621. NEWIOS   EQU   X'78' NEW I/O INTERRUPT PSW
  622. SVCR15   EQU   X'190' SVC TEMP SAV R15
  623. PGMR15   EQU   X'194' PGM TEMP SAV R15
  624. EXTR15   EQU   X'198' EXT TEMP SAV R15
  625. IHACVT   DSECT
  626. CVTTCBP  DS    A           NEXT TCB
  627.     ORG   IHACVT+56
  628. CVTDATE  DS    PL4         PACKED DATE
  629.     ORG   IHACVT+128
  630. CVTNUCB  DS    A           END OF NUCLEUS
  631.     ORG   IHACVT+164
  632. CVTMZ00  DS    A           END OF REAL MEMORY
  633.     ORG   IHACVT+196
  634. CVTSMCA  DS    A           SMF COMMON AREA
  635. CVTABEND DS    A           SECONDARY CVT
  636. CVTUSER  DS    A           USER POINTER
  637. *********************************************************************
  638. *
  639. *  ASCB - ADDRESS SPACE CONTROL BLOCK FOR PC/370 RELEASE 2.0+
  640. *
  641. *********************************************************************
  642. *
  643. *  THIS CONTROL BLOCK IS INITIALIZED BY THE PC/370 EMULATOR AT EXECUTION
  644. *  TIME FOR THE MAIN PROGRAM COM FILE AND IS LOCATED AT VIRTUAL MEMORY
  645. *  ADDRESS X'104'.  THIS CONTROL BLOCK IS ALSO CREATED FOR EACH ATTACHED
  646. *  COM PROGRAM ADDRESS SPACE DURING ATTACH SVC 26 EXECUTION (SEE SVC.DOC).
  647. *
  648. *********************************************************************
  649. ASCB     DSECT
  650. ASCIDR   DS    CL4  ASCB IDENTIFIER C'ASCB'
  651. ASCNXT   DS    A    ABSOLUTE ADDRESS OF NEXT DAUGHTER TASK ASCB
  652. ASCPRV   DS    A    ABSOLUTE ADDRESS OF PREVIOUS MOTHER TASK ASCB
  653. ASCASO   DS    A    ABSOLUTE ADDRESS OF ADDRESS SPACE ORIGIN
  654. ASCASL   DS    F    LENGTH OF ADDRESS SPACE (USED FOR ADDRESS PROTECTION)
  655. ASCASF   DS    A    RELATIVE ADDRESS OF FIRST FREE QUEUE ELEMENT (FQE)
  656. ASCENT   DS    A    RELATIVE ADDRESS OF ENTRY POINT (FROM COM PREFIX)
  657. ASCEXT   DS    A    RELATIVE ADDRESS OF RETURN IN MOTHER TASK ASCB
  658. LASCB    EQU   *-ASCB
  659.     END   MVS
  660.